In the field of data and telecommunication the demand for send larger and larger amounts of data is ever increasing. The demand for streaming movies, music, games etc. steady increases as the communication channels increase their capacity of sending or transmitting data. Even if development over recent years has been fast and the capacity in the communication channels has doubled many times, there are still bottlenecks due to the large amount of data that is communicated. Users may for example experience that a movie is lagging when watching it on for example on a smart phone.
One way of dealing with the above described problem to enhance the communication between different network nodes is to compress data before it is sent. There are different ways to compress data; however the basic principle is to encode data sequences, i.e. any type information using fewer bits then the original representation of that data. Such compression may be done lossless, i.e. without loosing any information when decompressing the data. Lossless compression reduces bits by identifying and eliminating statistical redundancy to present data in a more concise way without losing any information. Lossless compression is possible because most data has statistical redundancy. For example, in a video there may be areas (pixels) in an image that do not change colour over several video frames. Instead of coding “green pixel, green pixel, . . . ” for several video frames that are following each other, the data may be encoded as “green pixel in next 43 video frames”. This is an example of run-length encoding, but there are many schemes to reduce file size by eliminating redundancy, such as the Lempel-Ziv (LZ) compression methods.
Another way is to use lossy compression, which reduces bits by identifying “unnecessary” information and removing it. The starting point with such a scheme is that some loss of information is acceptable. Dropping nonessential detail from the data source can save storage space. Lossy data compression schemes are informed by research on how people perceive the data in question. For example, the human eye is more sensitive to subtle variations in luminance than it is to variations in colour. One example of lossy compression is the well known JEPG image compression, which works in part by rounding off nonessential bits of information. There is always a trade-off between information lost and the size reduction.
The process of reducing the size of a data file is popularly referred to as data compression, even if there is a formal name, source coding, which means that coding is done at the source of the data before it is stored or sent. The benefit with compression is that it reduces the resources used for storing, transmitting and processing data. However, the compressed data must be decompressed to use which requires some additional computational or other costs when performing decompression. To make it worthwhile to compress data there should be a significant compression such that it is worth the extra computational complexity.
There have been made many attempts to compress data. The demand for more efficient ways to reduce data lossless is ever increasing as the public requires higher and higher quality of data that is streamed to their devices. It is no longer enough to see a movie on your smart phone; one wants to see a movie in High Definition, HD, quality.
Thus there is a need fore a more efficient method for enhancing communication between different network nodes by compressing data.
Furthermore, there exist a number of manners for encrypting data. These encryption techniques are under constant attack and it is therefore necessary to update such techniques and also to propose alternative solutions to stay ahead of malevolent users.
Accordingly, there is thus a need for an improved, possibly alternative, manner for compressing and/or encrypting a file.